package controle;

import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;

import dominio.IOrdemDeCompra;
import dominio.OrdemDeCompra;

import br.com.pedido.www.AprovarOrdemDeCompraServicoRequest;
import br.com.pedido.www.AprovarOrdemDeCompraServicoResponse;
import br.com.pedido.www.ListaOrdemCompraBean;
import br.com.pedido.www.ListarOrdemDeCompraServicoRequest;
import br.com.pedido.www.OrdemDeCompraServicoRequest;
import br.com.pedido.www.OrdemDeCompraServicoResponse;

import infra.bean.OrdemDeCompraBean;


public class OrdemDeCompraServico  {
   


	public OrdemDeCompraServicoResponse gerarOrdemDeCompra(
			OrdemDeCompraServicoRequest params) throws RemoteException {

		OrdemDeCompraServicoParticipante part = new OrdemDeCompraServicoParticipante(this, params);		

		OrdemDeCompraBean ordemDeCompraBean = new OrdemDeCompraBean();
		ordemDeCompraBean.setIdPedidoServico(params.getOrdemCompraBeanElement().getIdPedidoServico());
		ordemDeCompraBean.setIdOrdemDeTrabalho(params.getOrdemCompraBeanElement().getIdOrdemTrabalho());
		ordemDeCompraBean.setStatus("NOVA");
		ordemDeCompraBean.setIdItemPedido(params.getOrdemCompraBeanElement().getIdItemPedido());
		ordemDeCompraBean.setValorTotal(params.getOrdemCompraBeanElement().getValorTotal());
		ordemDeCompraBean.setData(params.getOrdemCompraBeanElement().getData().getTime());
		ordemDeCompraBean.setFornecedor(params.getOrdemCompraBeanElement().getFornecedor());
		OrdemDeCompraServicoResponse ordemCompraServicoResponse = new OrdemDeCompraServicoResponse();
		
		try {
			ordemCompraServicoResponse.setIdOrdemCompra(part.gerarOrdemDeCompra(ordemDeCompraBean));
			
		}  catch (SQLException e) {
			throw new RemoteException (e.getMessage());
		}


		return ordemCompraServicoResponse;
		
	}

	
	public AprovarOrdemDeCompraServicoResponse aprovarOrdemDeCompra(
			AprovarOrdemDeCompraServicoRequest params) throws RemoteException {
	
		OrdemDeCompraServicoParticipante part = new OrdemDeCompraServicoParticipante(this, params);		
	
		AprovarOrdemDeCompraServicoResponse aprovarOrdemCompraServicoResponse = new AprovarOrdemDeCompraServicoResponse();
		
		try {
			OrdemDeCompraBean ordemDeCompraBean = part.aprovarOrdemDeCompra(params.getIdOrdemCompra());
			Calendar cal = Calendar.getInstance();
			cal.setTime(ordemDeCompraBean.getData());
			
			Calendar cal1 = Calendar.getInstance();
			cal.setTime(ordemDeCompraBean.getDataAprovacao());
			
			ListaOrdemCompraBean ordemDeCompra = new ListaOrdemCompraBean(ordemDeCompraBean.getIdOrdemDeCompra(), ordemDeCompraBean.getIdPedidoServico(), ordemDeCompraBean.getIdItemPedido(),ordemDeCompraBean.getIdOrdemDeTrabalho(), ordemDeCompraBean.getValorTotal(), cal, cal1, ordemDeCompraBean.getNomeFornecedor(), ordemDeCompraBean.getStatus(), ordemDeCompraBean.getFornecedor(), ordemDeCompraBean.getIdTipoItem(), ordemDeCompraBean.getDescricaoItem(), ordemDeCompraBean.getQtdadeItem(), ordemDeCompraBean.getValorItem());
			aprovarOrdemCompraServicoResponse.setListaOrdemCompraBeanElement(ordemDeCompra);
			
		}  catch (SQLException e) {
			throw new RemoteException (e.getMessage());
		}


		return aprovarOrdemCompraServicoResponse;
	
	
	}
	
	
	public br.com.pedido.www.ListaOrdemCompraBean[] listarOrdemDeCompra(
			ListarOrdemDeCompraServicoRequest params) throws RemoteException {
	
	
		try {
			IOrdemDeCompra ordemCompra = new OrdemDeCompra();
		
			ArrayList listaOrdemCompra = new ArrayList();
			listaOrdemCompra = ordemCompra.listarOrdemDeCompras(params.getValorMinimo());
			
	
			br.com.pedido.www.ListaOrdemCompraBean[] ordensCompraResponse = new br.com.pedido.www.ListaOrdemCompraBean[listaOrdemCompra.size()];
			
			for (int i=0; i<listaOrdemCompra.size(); i++) {
				OrdemDeCompraBean ordemCompraListaBean = (OrdemDeCompraBean) listaOrdemCompra.get(i);
				
				Calendar cal = Calendar.getInstance();
				cal.setTime(ordemCompraListaBean.getData());
				
				Calendar cal1 = Calendar.getInstance();
				cal.setTime(ordemCompraListaBean.getDataAprovacao());
				 
				br.com.pedido.www.ListaOrdemCompraBean ordemCompraBean = new br.com.pedido.www.ListaOrdemCompraBean(ordemCompraListaBean.getIdOrdemDeCompra(), ordemCompraListaBean.getIdPedidoServico(),
						ordemCompraListaBean.getIdOrdemDeTrabalho(),
						ordemCompraListaBean.getIdItemPedido(),
						ordemCompraListaBean.getValorTotal(),
						cal,
						cal1,
						ordemCompraListaBean.getNomeFornecedor(),
						ordemCompraListaBean.getStatus(),
						ordemCompraListaBean.getFornecedor(),
						ordemCompraListaBean.getIdTipoItem(),
						ordemCompraListaBean.getDescricaoItem(),
						ordemCompraListaBean.getQtdadeItem(),
						ordemCompraListaBean.getValorItem());
				ordensCompraResponse[i] = ordemCompraBean;
			}
		
			return ordensCompraResponse;
		}
		catch(SQLException e){
			throw new RemoteException(e.getMessage());
		}
	
	
	}


}
